#include "mainwindow.h"
#include "ParseJson.h"
#include <QDebug>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    QByteArray testJsonData="{\"sensors\":{\"accel_value\":[{\"x\":9876,\"y\":9999,\"z\":9999},{\"x\":1234,\"y\":1111,\"z\":1111}],\"temp_value\":[{\"temp\":1}]},\"led_status\":{\"led1\":\" on\",\"led2\":\" on\",\"led3\":\" on\"}}";
    /*
    {
      "sensors": {
        "accel_value": [
          {
            "x": 9876,
            "y": 9999,
            "z": 9999
          },
          {
            "x": 1234,
            "y": 1111,
            "z": 1111
          }
        ],
        "temp_value": [
          {
            "temp": 1
          }
        ]
      },
      "led_status": {
        "led1": " on",
        "led2": " on",
        "led3": " on"
      }
    }
    */
    ParseJson *parseJson=new ParseJson();
    //遍历并打印
    parseJson->loadJson(testJsonData);

    //解析特定数据
    QJsonParseError json_error;
    QJsonDocument json_doc=QJsonDocument::fromJson(testJsonData,&json_error);
    if(json_doc.isNull()||json_doc.isEmpty()||json_error.error!=QJsonParseError::NoError)
    {
        qDebug()<<"parse error";
        return;
    }
    else
    {
        const QJsonObject root_obj=json_doc.object();

        //这里略过判断，正常操作需要判断后继续解析，判断操作参考loadJson方法
//        QJsonObject sub1 = root_obj.value("sensors").toObject();
//        QJsonArray array1 = sub1.value("accel_value").toArray();
//        QJsonObject sub2 = array1.at(0).toObject();
//        int accel_x = sub2.value("x").toInt();

        qDebug()<<"parse accel_x:"<< json_doc.object().value("sensors").toObject().value("accel_value").toArray().at(0).toObject().value("x").toInt();
        qDebug()<<"parse accel_y:"<< json_doc.object().value("sensors").toObject().value("accel_value").toArray().at(0).toObject().value("y").toInt();
        qDebug()<<"parse accel_z:"<< json_doc.object().value("sensors").toObject().value("accel_value").toArray().at(0).toObject().value("z").toInt();

        qDebug()<<"led_status:"<< json_doc.object().value("led_status").toObject();
        qDebug()<<"led1 status:"<< json_doc.object().value("led_status").toObject().value("led1").toString();

    }


}

MainWindow::~MainWindow()
{

}

